{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#SVM on Data Set\n",
    "#采用5折交叉验证，用正确率作为评价指标，对线性SVM和RBF核的SVM模型超参数调优\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "#SVM并不能直接输出各类的概率，所以在这个例子中我们用正确率作为模型预测性能的度量\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "train = pd.read_csv(\"FE_pima-indians-diabetes.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['Outcome']   \n",
    "X_train = train.drop([\"Outcome\"], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.774755962991257\n",
      "{'C': 0.01}\n"
     ]
    }
   ],
   "source": [
    "#线性SVM\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "param_grid = {'C': Cs}\n",
    "grid = GridSearchCV(SVC(kernel='linear'), param_grid, cv=5)\n",
    "\n",
    "grid.fit(X_train, y_train)\n",
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score=nan,\n",
       "             estimator=SVC(C=1.0, break_ties=False, cache_size=200,\n",
       "                           class_weight=None, coef0=0.0,\n",
       "                           decision_function_shape='ovr', degree=3,\n",
       "                           gamma='scale', kernel='rbf', max_iter=-1,\n",
       "                           probability=False, random_state=None, shrinking=True,\n",
       "                           tol=0.001, verbose=False),\n",
       "             iid='deprecated', n_jobs=None,\n",
       "             param_grid={'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000],\n",
       "                         'gamma': [1e-05, 1e-06, 0.0001, 0.001, 0.01, 0.1, 1]},\n",
       "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
       "             scoring=None, verbose=0)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#RBF核SVM正则参数调优\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "gammas = [1e-5, 1e-6, 0.0001,0.001, 0.01, 0.1, 1]\n",
    "#gammas =[1e-5, 1e-6]\n",
    "param_grid = {'C': Cs, 'gamma' : gammas}\n",
    "grid = GridSearchCV(SVC(kernel='rbf'), param_grid, cv=5)\n",
    "\n",
    "grid.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7773788303200068\n",
      "{'C': 10, 'gamma': 0.01}\n"
     ]
    }
   ],
   "source": [
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7773788303200068\n",
      "{'C': 10, 'gamma': 0.01}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(grid.best_score_)\n",
    "print(grid.best_params_)\n",
    "\n",
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_gamms = len(gammas)\n",
    "\n",
    "test_scores =  np.array(test_means).reshape(n_Cs,number_gamms)\n",
    "#train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_gamms)\n",
    "#train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(gammas):\n",
    "    pyplot.plot(x_axis, test_scores[:,i], label= gammas[i])\n",
    "    #pyplot.errorbar(x_axis, test_scores[:,i], yerr=test_stds[:,i] ,label = gammas[i] )\n",
    "    #pyplot.errorbar(x_axis, train_scores[:,i], yerr=train_stds[:,i] ,label = penaltys[i] +' Train')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuary' )\n",
    "\n",
    "pyplot.show()\n",
    "\n",
    "#Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
